Skip to main content
Version: Next

FE Code Review Process

1. Purpose

The code review process ensures that all code changes meet quality standards, maintainability, and adhere to coding guidelines. It promotes collaboration, knowledge sharing, and improves overall codebase reliability.

2. Scope

This document outlines the code review process specifically for the native iOS and Android mobile applications.

3. Process Overview

3.1. Initiating a Code Review

  1. Developer Submission: A developer completes a feature or bug fix and submits it for review.

  2. Notification: The team lead or designated reviewer is notified of the code review request. Lead of the feature pod should be made required reviewer

3.2. Code Review

  1. Review Preparation:

    • Reviewer familiarizes themselves with the context and requirements of the change.
  2. Review Checklist:

    • Please refer this on how to comment on a PR
    • Ensure adherence to coding standards (e.g., SwiftLint for iOS, KT lint for Android).
    • Verify functionality against acceptance criteria.
    • Check for potential bugs, edge cases, and error handling.
    • Evaluate code readability, maintainability, and performance implications.
  3. Documentation Review (if applicable):

    • Verify that changes are documented appropriately, including inline comments and README updates.

3.3. Review Feedback

  1. Feedback Delivery:

    • Please refer this on how to comment on a PR
    • Reviewer provides constructive feedback, suggestions for improvements, or asks clarifying questions.
    • Feedback should be specific, actionable, and respectful.
    • If its a required change, you could specify that as a "Required change". If its a optional change/ suggestion, you can mention it as "Question Point/Discussion"
  2. Discussion:

    • Developer and reviewer discuss feedback and clarify any points as necessary.
    • Agreement on changes or further iterations is reached.

3.4. Implementation of Feedback

  1. Developer Actions:

    • Developer makes necessary revisions based on feedback.
    • Updates are made directly to the code or through subsequent commits.
  2. Verification:

    • Reviewer verifies that feedback has been addressed satisfactorily.
    • Reviewer should resolve the comment after the changes are made

3.5. Approval and Merge

  1. Final Approval:

    • Reviewer approves the code change if all feedback is addressed and meets standards.
    • In case of unresolved issues, further iterations are initiated.
  2. Merge:

    • Code is merged into the main branch after approval.
    • Continuous integration (CI) processes may trigger automated tests and deployments.
    • Delete the branch after it is merged. Use Squash Merge when merging, it helps to have a cleaner commit history

4. Responsibilities

  • Developer: Submits code for review, addresses feedback promptly.
  • Reviewer: Conducts thorough reviews, provides constructive feedback, ensures quality and adherence to standards.
  • Team Lead (or Project Manager): Oversees the process, resolves conflicts or disagreements, ensures timely reviews.

5. Best Practices

  • Regular Reviews: Conduct reviews frequently to maintain code quality and consistency.
  • Feedback Culture: Foster an environment where feedback is constructive and respectful.
  • Automation: Utilize automated tools for code formatting, static analysis, and testing to complement manual reviews.
  • Knowledge Sharing: Use reviews as opportunities for knowledge sharing and mentoring.

6. Tools and Resources

  • Version Control: Git (ADO).
  • Code Quality: SwiftLint (iOS), KT lint (Android).
  • Documentation: Markdown, README files, inline comments.
  • Please refer this guide for Pull request related this

7. Continuous Improvement

  • Feedback Loop: Periodically review and refine the code review process based on team feedback and evolving best practices.
  • Metrics: Monitor metrics such as review turnaround time, issues found post-merge, and team satisfaction to identify areas for improvement.

8. Conclusion

Effective code reviews are essential for ensuring code quality, reducing defects, and improving overall team collaboration. By following this documented process, we aim to maintain a high standard of code integrity and foster a culture of continuous improvement.